﻿<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:Визуализаторы="clr-namespace:Wpfконфигуратор.Визуализаторы">

    <DataTemplate  DataType="{x:Type Визуализаторы:BooleanВизуализатор}" >
        <CheckBox IsChecked="{Binding  Path=Значение,  UpdateSourceTrigger=PropertyChanged}"
                                                  Content="{Binding Path=Текст}"
                                                  Padding="7,0" VerticalAlignment="Center" VerticalContentAlignment="Center" />
    </DataTemplate>

    <DataTemplate  DataType="{x:Type Визуализаторы:ПеречислительВизуализатор}">
        <ComboBox ItemsSource="{Binding  Path=СписокПеречислителя}" HorizontalAlignment="Left"
                          Text="{Binding   Path= Значение, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
                          />
    </DataTemplate>

    <DataTemplate DataType="{x:Type Визуализаторы:ФлагВизуализатор}">
        <StackPanel Orientation="Horizontal" >
            <TextBox Text="{Binding Path=ЗначениеТекст, Mode=TwoWay}" TextWrapping="Wrap" MaxWidth="300" />

            <ComboBox  ItemsSource="{Binding  Path=СписокФлагов}"  >
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <CheckBox IsChecked="{Binding Path=Выбран}" Content="{Binding Path=ИмяФлага}"  />
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>

        </StackPanel>
    </DataTemplate>
    <DataTemplate DataType="{x:Type Визуализаторы:ЧислаВизуализатор}">
            <TextBox MinWidth="10" Text="{Binding Path=Строка  ,  UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, 
                             NotifyOnValidationError=True }" >
            	
                <Validation.ErrorTemplate>
                    <ControlTemplate>
                        <DockPanel LastChildFill="True">
                            <TextBlock Text="!!!" DockPanel.Dock="Right" Foreground="Red" FontSize="16" 
                                       ToolTip="{Binding ElementName=A, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"/>
                            <Border BorderBrush="Red" BorderThickness="1">
                                <AdornedElementPlaceholder Name="A" HorizontalAlignment="Left" />
                            </Border>
                        </DockPanel>
                    </ControlTemplate>
                </Validation.ErrorTemplate>
            </TextBox>
    </DataTemplate>
    <DataTemplate DataType="{x:Type Визуализаторы:СтрокаВизуализатор}">
        <TextBox Text="{Binding Path=Строка, UpdateSourceTrigger=PropertyChanged}"/>
    </DataTemplate>
    
    <DataTemplate DataType="{x:Type Визуализаторы:АдресФайлаВизуализатор}">
        <StackPanel Orientation="Horizontal" >
            <TextBox Text="{Binding Path=Адрес, Mode=TwoWay}" TextWrapping="Wrap" MaxWidth="300" />
            <Button Content="Выбрать" Command="{Binding Path=КомандаВыбрать}"/>
        </StackPanel>
    </DataTemplate>

    <DataTemplate DataType="{x:Type Визуализаторы:ДинамикОбъект}">
        <Border x:Name="b" BorderThickness="1"  BorderBrush="OliveDrab"  >
            <TextBlock x:Name="t" Text="{Binding Path=ОписаниеТипа.Имя}" 
                      ToolTip="{Binding Path=ОписаниеТипа.Описание}" />
        </Border>
        <DataTemplate.Triggers>
            <Trigger Property="TextBlock.IsMouseOver" Value="True">
                <Setter TargetName="t" Property="TextBlock.Foreground" Value="Blue" />
                <Setter TargetName="b" Property="BorderBrush" Value="Red"/>
            </Trigger>
           
        </DataTemplate.Triggers>

    </DataTemplate>
    <DataTemplate DataType="{x:Type Визуализаторы:ВизуализаторОснова}">
        <Border x:Name="b" BorderThickness="1"  BorderBrush="OliveDrab"  >
            <TextBlock x:Name="t" Text="{Binding Path=Объект}" MinWidth="200"
                      ToolTip="{Binding Path=Переменная.ТипПеременной.Описание}" />
        </Border>
        <DataTemplate.Triggers>
            <Trigger Property="TextBlock.IsMouseOver" Value="True">
                <Setter TargetName="t" Property="TextBlock.Foreground" Value="Blue" />
                <Setter TargetName="b" Property="BorderBrush" Value="Red"/>
            </Trigger>
            <!--<Trigger Property="TextBlock.IsFocused" Value="True">
                <Setter TargetName="b" Property="BorderBrush" Value="DarkRed" />
            </Trigger>-->
        </DataTemplate.Triggers>

    </DataTemplate>


</ResourceDictionary>